home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-09-05 | 25.6 KB | 1,713 lines | [TEXT/MWII] |
-
-
-
-
-
-
-
- GSBug
-
-
- Current Version 1.6b20
-
-
-
-
- Version 1.6b20 (DAL)
-
-
- Added new GS/OS call name SetStdRefNum, call number $203A.
-
-
- Fixed the version string so it doesn’t say “Apple Confidential.”
-
-
-
- Version 1.6b19 (DAL)
-
-
-
- To automatically load a templates file at boot time, it must be named
- GSBug.AutoTemp
-
- (in the System.Setup folder).
-
-
-
- If you use LoadTemp without a pathname, it still defaults to
- GSBug.Templates.
-
-
-
-
- Version 1.6b18 (DAL)
-
-
-
- Versions with 6.0 stuff included are now 1.6bxx; without 6.0 stuff is still
- 1.5bxx.
-
-
-
- LoadTemp command no longer returns a bogus error after successfully
- loading a
-
- templates file. Also, if you type LoadTemp with no pathname, it uses
-
- */System/System.Setup/GSBug.Templates.
-
-
-
- Turned off high bits on the GSBug.Setup file pathname, so you don’t get a
- strange
-
- error while booting from an AppleShare server.
-
-
-
- KNOWN BUG: Don’t put a breakpoint on an imbedded name. If you do, the
- name gets
-
- overwritten when the breakpoint is removed.
-
-
-
- Version 1.5b17 (DAL)
-
-
-
- Now supports inline imbedded procedure names (as generated by the name
- and
-
- procname macros in M16.Debug, for example). These show up in
- disassembly and as
-
- the operands of JSRs and JSLs.
-
-
-
- OSBreaks trigger regardless of call class now. For example, you can
- SetOSBrk for
-
- either Open or OpenGS, and either one will cause a break.
-
-
-
- Changed named-resource call names to begin with RM
- (RMLoadNamedResource,
-
- etc).
-
-
-
- When GSBug notices a toolbox call being made in other than full 16-bit
- mode, it
-
- displays a a warning dialog (using TLTextMountVolume). Hitting ESC at
- that dialog
-
- cancels future warnings until you reload GSBug.
-
-
-
- When GSBug notices a toolbox call being made with Decimal mode on, it
- stops cold at
-
- a BRK $F8, rather than letting things get completely baked before
- crashing.
-
-
-
- Fixed one old reference to $010100 to store $C0 instead of $80.
- Interrupts should
-
- reliably use $100..1C0 for stack space now.
-
-
-
- Added 5 blanks to end of 'TRACE ' message so it completely overwrites the
- 'SINGLE
-
- STEP' message.
-
-
-
-
- Version 1.5b16 (DAL)
-
-
-
- No such thang.
-
-
-
-
- Version 1.5b15 (DAL)
-
-
-
- Option-space now works reliably to bypass a memory-protect range,
- including a tool
-
- call. (This is an old feature, but keyboard translation normally prevented
- it from
-
- working!)
-
-
-
- In trace mode, Space and ESC now kill "awainting RTx" mode.
-
-
-
- Fixed "n" command so it won't crash if nobody has called DebugSetHook.
-
-
-
- Having tool breaks on calls which get made indirectly by GSBug no longer
- cause a
-
- crash. You can break on NewHandle now, for example.
-
-
-
- In Breakpoint subscreen, Space maps trigger count from 0 to 1 and from
- nonzero to
-
- zero. Tab moves between the address and count fields (easier than hitting
- arrows).
-
-
-
- In the memory-protect subscreen, Tab moves between columns.
-
-
-
- Added $01/FC00.FFFF (OS system service calls) to the memory protect
- list.
-
-
-
- Changed the default trace-window setting to center-screen.
-
-
-
- Changed the EmulStack value from $80 to $C0 (trying to get rid of some
- unpredictable
-
- crashes, probably caused by AppleTalk running out of stack space). This
- means you
-
- can safely trace a program while the stack is in the $01C1..01FF range,
- and that
-
- interrupts use $0100..01C0.
-
-
-
- GSBug now takes a whole bank, minimizing its effect on where things are
- located in
-
- memory relative to each other, and ensuring that tool breaks work reliably
- (tool calls
-
- never break if they come from the same bank the debugger is in).
-
-
-
- Note that templates do work; you can ignore the garbage error you still get
- from
-
- loadtemp.
-
-
-
-
- Version 1.5b14 (DAL)
-
-
-
- Versions 1.5b12 and b13 were never officially released. 1.5b14 is fine,
- except that I
-
- make no guarantees about the Template commands. I think they work, but
- you’ll get a
-
- funky error message from loadtemp.
-
-
-
- When you let a JSL execute in real time (including a tool call), the
- debugger
-
- temporarily changes the owner ID of its own handle to match the owner of
- the handle
-
- containing the code you’re debugging. This way MMStartUp returns the
- appropriate
-
- memory ID, instead of always returning the debugger’s ID.
-
-
-
- DebugSetHook(nil) now removes the hook.
-
-
-
- The 1K bank 0 segment GSBug allocates now has the same ID as the
- debugger (was
-
- previously always $80xx).
-
-
-
- Fixed OS breaks to work after return from ProDOS 8 (added a Notify Proc
- to re-trap the
-
- OS vectors).
-
-
-
- Changed the “_” command so that if you don’t type a number, it’s like
- typing zero. For
-
- example, if you have a template called “Template” which displays an
- informational
-
- message, you can type “_Template” instead of “_Template 0”.
-
-
-
- DP:xxx command dumps 16 bytes from DP to the command line.
-
-
-
- Tool call $0CFF DebugGetInfo(word):long. Word=0 returns the current
- value of the
-
- program counter (useful from a procedure called by the N command).
-
-
-
- Note that real-time counted breakpoints don't work for JMP() ($6C),
- JMP(,X) ($7C),
-
- JML() ($DC), and JSR(,X) ($FC).
-
-
-
- With Monte's help, located the misplaced CLI that was causing the X
- command used
-
- on a JSR to accidentally return with the Bank register set to the
- debugger's bank, and
-
- the Stack set to the Interrupt-time stack.
-
-
-
- Version 1.5b11 (DAL)
-
-
-
-
- You can use SetOSBrk and ClrOSBRK with call names now. Class-1 names
- all end
-
-
- in GS to distinguish them from their class-0 siblings. Examples:
-
-
-
- SetOSBrk #1
-
-
-
- SetOSBrk _Create
-
-
-
- SetOSBrk #2001
-
-
-
- SetOSBrk _CreateGS
-
-
-
-
- The debugger now changes its own handleUs memory ID during a real-time
- JSL to
-
-
- match the code being stepped. For example, now you can step over an
- MMStartUp
-
-
- and get the expected ID returned (the application's instead of the
- debugger's).
-
-
-
-
- Changed 'D' command to 'I' so it doesn't interfere with typing a hex number
-
-
- that starts with a D. The I command toggles the 'ignore REP/SEP
- instructions
-
-
- mode' when disassembling.
-
-
-
-
- Changed parsing for the P (Print screen) command so that it just beeps if
- there are any
-
-
- characters after the P. (Typing 'put' intead of 'out' can no longer hang your
-
-
- system.)
-
-
-
-
- Put the help screen for MP mode back in.
-
-
-
-
- The solid flashing cursor in MEM, MP, and BP no longer flashes. In
- exchange
-
-
- for this, special characters (like braces) that happen to be in Inverse don't
-
-
- flash while you're in the subscreens.
-
-
-
-
- Added pseudo tool call $0BFF=DebugSetHook (one Long parameter). The N
-
-
- ("neat- o") command calls this hook.
-
-
-
-
- Removed a conditional hard-coded increment of $004002 when X-ing a
- JSR.
-
-
-
-
- Added REP #$30 on the two tool-dispatcher-intercept routines. Making
- tool
-
-
- calls in other than full native mode is still not a good idea.
-
-
-
-
- Fixed real-time breakpoints for most 1-byte instructions and all 16-bit
- load
-
-
- immediate instructions. Previously, they crashed when used with a count
-
-
- greater than one.
-
-
-
-
- Please note that */System/System.Setup/GSBug.Setup is *already* loaded
-
-
- automatically (has been for quite a while).
-
-
-
-
-
- Version 1.5b10 (DAL)
-
-
-
-
- Stepping in emulation mode should be much more reliable now, although it
- isn't
-
-
- perfect (in particular, one place where there's a window of vulnerability
- is
-
-
- using X on a JSR in emulation mode, but if you have the I bit set in your P
-
-
- register there's no problem).
-
-
-
-
- Having the stack in $01xx works much better now, whether you're in
- emulation
-
-
- or not. This works by frequently stuffing a $80 into $01/0100
- (EMULSTACK,
-
-
- the location the interrupt manager and other things used to set the $01xx
-
-
- stack when needed).
-
-
-
-
- If you trace code that actually uses the $01/0100 value to set the stack
-
-
- pointer, you still have a problem, since your program will start using the
-
-
- part of the stack that gets toasted on every interrupt.
-
-
-
-
- You can now type in GSBug even if the Event Manager is on but keyboard
-
-
- interrupts are off. Previously this would leave you dead in the water.
-
-
-
-
- Files created with CSave now have a real filetype/auxtype assignment
- ($5A/0005).
-
-
-
-
- Fixed DebugStr to return no error (previously it was returning the high
- two
-
-
- bytes of the caller's address as an error).
-
-
-
-
- Took out code that was checking $C020 (not SLOTREG at $C02D) to see if
- the
-
-
- printer slot was switched in. Makes no sense anyway, because a printer
- can
-
-
- legitimately be either an internal or external slot.
-
-
-
-
- Brought the list of Toolbox call names up to date for System Software
- 5.0.3
-
-
- (see changes below).
-
-
-
-
- Added tool set names (for example, $0002 is Memory Manager). For some
- time,
-
-
- you've been able to use SetTBrk with a tool set number, to force a break on
-
-
- every call to that tool set. Now you can do it by name, too.
-
-
-
- Examples:
-
-
-
- SetTBrk #2
-
-
-
- SetTBrk _Memory Manager
-
-
-
- ShowBrks
-
-
-
-
- Saved about 900 bytes by removing many extra copies of the string
- "Unknown".
-
-
-
-
- Obsolete call names removed:
-
-
-
- 1522 TEInsertPageBreak
-
-
- 2022 TEGetHooks
-
-
- 2122 TESetHooks
-
-
- 2222 TEGetDefProc
-
-
-
-
- Call names corrected:
-
-
-
- 0D02 RemoveFromOOMQueue
-
-
- 2115 SelectIText
-
-
- 1021 VDKeyGetKRCol
-
-
- 1121 VDKeyGetKGCol
-
-
- 1221 VDKeyGetKBCol
-
-
-
-
-
- Call names added:
-
-
-
- 3603 ReleaseROMResource 3703 ConvSeconds 010A SANEBootInit
-
-
- 020A SANEStartUp 030A SANEShutDown 040A SANEVersion
-
-
- 050A SANEReset 060A SANEStatus 090A FPNum
-
-
- 0A0A DecStrNum 0B0A ElemNum 5D0E
- TaskMasterContent
-
-
- 5E0E TaskMasterKey 1713 GetDeviceName 1813
- PrGetPrinterSpecs
-
-
- 1913 PrDevPrChanged 1A13 PrDevStartup 1B13 PrDevShutDown
-
-
- 1C13 PrDevOpen 1D13 PrDevRead 1E13 PrDevWrite
-
-
- 1F13 PrDevClose 2013 PrDevStatus 2113 PrDevAsyncRead
-
-
- 2213 PrDevWriteBackground 3013 PrDevIsItSafe 2022
- TEOffsetToPoint
-
-
- 2122 TEPointToOffset 2222 TEGetDefProc 2322 TEGetRuler
-
-
- 2422 TESetRuler 2522 TEScroll 2622 TEGetInternalProc
-
-
- 2722 TEGetLastError 2822 TECompactRecord
-
-
- 0123 MSBoot 0223 MSStartUp 0323 MSShutDown
-
-
- 0423 MSVersion 0523 MSReset 0623 MSStatus
-
-
- 0923 SetBasicChan 0A23 SetMIDIMode 0B23 PlayNote
-
-
- 0C23 StopNote 0D23 KillAllNotes 0E23 SetRecTrack
-
-
- 0F23 SetPlayTrack 1023 TrackToChan 1123 Locate
-
-
- 1223 SetVelComp 1323 SetMIDIPort 1423 SetInstrument
-
-
- 1523 SeqPlayer 1623 SetTempo 1723 SetCallBack
-
-
- 1823 SysExOut 1923 SetBeat 1A23 MIDIMessage
-
-
- 1B23 LocateEnd 1C23 Merge 1D23 DeleteTrack
-
-
- 1E23 SetMetro 1F23 GetMSData 2023 ConvertToTime
-
-
- 2123 ConvertToMeasure 2223 MSSuspend 2323 MSResume
-
-
- 2423 SetTuningTable 2523 GetTuningTable 2623 SetTrackOut
-
-
- 2723 StartMIDIDriver 2823 StopMIDIdriver 04FF DebugVersion
-
-
- 06FF DebugStatus 09FF DebugStr 0AFF SetMileStone
-
-
-
-
-
- Tool Set Names (You can use these with SetTBrk.)
-
-
-
- 0001 Tool Locator
-
-
- 0002 Memory Manager
-
-
- 0003 Misc Tools
-
-
- 0004 QuickDraw
-
-
- 0005 Desk Manager
-
-
- 0006 Event Manager
-
-
- 0007 Scheduler
-
-
- 0008 Sound Tools
-
-
- 0009 ADB
-
-
- 000A SANE
-
-
- 000B Integer Math
-
-
- 000C Text Tools
-
-
- 000E Window Manager
-
-
- 000F Menu Manager
-
-
- 0010 Control Manager
-
-
- 0011 Loader
-
-
- 0012 QuickDraw Aux
-
-
- 0013 Print Manager
-
-
- 0014 Line Edit
-
-
- 0015 Dialog Manager
-
-
- 0016 Scrap Manager
-
-
- 0017 Standard File
-
-
- 0019 Note Synth
-
-
- 001A Note Seq
-
-
- 001B Font Manager
-
-
- 001C List Manager
-
-
- 001D ACE
-
-
- 001E Resource Manager
-
-
- 0020 Midi
-
-
- 0021 Video Overlay
-
-
- 0022 Text Edit
-
-
- 0023 MIDI Synth
-
-
- 00FF Debugger
-
-
-
-
-
- GS/OS Call Names
-
-
-
- Brought the list of GS/OS call names up to date for System Software 5.0.3.
-
-
-
-
- Removed this call:
-
-
-
- $000E ExpandPath (becuase there's no class-0 version)
-
-
-
-
- Added these class-1 call names:
-
-
-
- $2029 Quit
-
-
- $2033 FSTSpecific
-
-
- $2034 AddNotifyProc
-
-
- $2035 DelNotifyProc
-
-
- $2036 DRename
-
-
- $2037 GetStdRefNum
-
-
- $2038 GetRefNum
-
-
- $2039 GetRefInfo
-
-
-
-
-
-
- What It Doesn't Do Yet
-
-
-
-
- Note--sometimes the debugger gets mysteriously disconnected from the
-
-
- Apple-Ctl-ESC vector. If you can reproduce this, let me know.
-
-
-
-
- Holding down Option occasionally overrides a memory-protect area, but
-
-
- sometimes it crashes instead.
-
-
-
-
- Some of the help screens are incompelete or inaccurate.
-
-
-
-
- Templates currently limited to 64K. If template file >64K, it gets left
- open
-
-
- by accident.
-
-
-
-
- There's a harmless problem where hitting SPACE to single-step an RTS
-
-
- sometimes doesn't do anything at all.
-
-
-
-
- Using X to execute a JSR real-time has problems sometimes. It's been
- known
-
-
- to scramble the B register (if anyone has a reproducible case, let me
- know!),
-
-
- and I've seen it come back in $01/Fxxx space with the ROM enabled when
- the
-
-
- language card was supposed to be.
-
-
-
-
- Breakpoints don't work quite right in bank-switched memory, either (it
- doesn't
-
-
- store the original instruction into the right bank?).
-
-
-
-
- Should show OS call names on a JSL $E100B0 (examine stack if stepping,
- and look
-
-
- for a PEA $xxxx in a disassembly).
-
-
-
-
- Install notify procedure so OS breaks still work after coming back from
-
-
- ProDOS 8.
-
-
-
-
- The debugger chains into the tool-dispatcher vectors its own way. It
- should
-
-
- use the standard method defined in GS Technical Note #87.
-
-
-
-
- Should make the Init version take exactly 64K to avoid mucking up memory
- use.
-
-
- This will also fix problems where tool calls made from the same bank as
- GSBug
-
-
- never trigger a tool break.
-
-
-
-
- Will implement pseudo Tool calls to set and clear debugger breakpoints
- under
-
-
- program control.
-
-
-
-
- May make the MEM locations labelable (and save labels in the config file).
-
-
-
-
- RHandleS template partially implemented?
-
-
-
-
- Unload should call UserShutDown on self (under ProDOS 8, just beep
- instead).
-
-
-
-
- Make sure that "\" for changing display modes is documented.
-
-
-
-
- Should load */System/System.Setup/GSBug.TMPL automatically.
-
-
-
-
-
- Documentation
-
-
-
-
- The GSBug manual from APDA of 3/16/89 seems to be the latest there is.
- All
-
-
- features not covered there should be in these release notes.
-
-
-
-
-
- History
-
-
-
-
- This part of the document details all changes made to the debugger from
- version
-
-
- 1.3b1 to 1.5b8.
-
-
-
-
- Bug Fixes:
-
-
-
- Real Time Tool Breaks - The mechanism for using tool breaks real time
- has
-
-
- been modified, the old method never worked quite right, what used to
- happen
-
-
- was that when a tool break was to occur, the stub in the dispatch vector
-
-
- would simply jump into the debugger, this would cause the stack and
- processor
-
-
- not to be set as if they came from an interupt, and the next exit of the
-
-
- debugger would cause code execution to start at an inapropriate case, also
-
-
- the actual tracing of a tool break would also cause the debugger to
-
-
- improperly save the current registers, so that the stack/direct page and
-
-
- processor status might come back damaged from a tool break. The stub has
-
-
- been modified to now enter the debugger with a break instruction instead
-
-
- of jumping to the front. This seems to solve all real time tool break
-
-
- problems.
-
-
-
- Error tool breaks - These also did not work well, and did not seem to be
-
-
- used by anyone anyway, so they have been removed to make room for
- OSBreaks.
-
-
-
- Version 1.5b3:
-
-
- % display code was fixed so that the '*' would properly be displayed in
-
-
- front of any toolbox glue that is detected.
-
-
- % Fixed template data display so that if the data being displayed crosses
-
-
- a bank boundry, the data is properly followed into the new bank.
-
-
- % Modified the IN command so that it respects trigger counts of 0 and does
-
-
- not insert real time breaks.
-
-
-
- Version 1.5b5:
-
-
- % Added Glue tool break support. Now toolbreaks work for regular and glue
-
-
- tool breaks. ErrorBreaks do not work for glue as they do not make a lot
-
-
- of sense.
-
-
- % Made debugger work even when a DA window is open. See new features
- below.
-
-
- % Added keyClick so that you hear whenever the system draws a key from
- the
-
-
- event queue. Also, cleaned up some comments.
-
-
-
- Version 1.5b6:
-
-
- % Added new DebugStr toolcall that can be used to get more from the
- debugger.
-
-
-
- Version 1.5b7:
-
-
- % Added support for real time conditional breaks.
-
-
- % Added OSBreaks.
-
-
- % Fixed the Debugger tool calls (like DebugStr ) so that they use the proper
-
-
- tool numbers (they had the toolset number in the high byte instead of the
-
-
- low byte) Documentation for them should also be right.
-
-
-
- Version 1.5b8:
-
-
- % Added a debugger version and status call to the debugger tools.
-
-
- % Enhanced the OSBreak facility.
-
-
- % Removed the keyclicks because Dave complained.
-
-
-
- Version 1.5b9:
-
-
- % Fixed some bugs.
-
-
-
-
- New Features:
-
-
-
- DebugStr:
-
-
- This feature is designed to allow developers to better know where in their
-
-
- program the debugger was entered. The way this feature works is that if
- you
-
-
- want to enter the debugger programatically you can now also pass a string
- to
-
-
- the debugger which will be printed on the bottom line of the screen when
- the
-
-
- debugger is entered.
-
-
-
- The way this mechanism works is a fake tool call that the debugger now
-
-
- supports. Since this looks like a normal tool call it can be easily called
-
-
- by any high level language as well as by assembly language. This toolcall
-
-
- called DebugStr takes a single parameter, a pointer to a pascal string.
- When
-
-
- the tool call is made the debugger is entered as if you had put a break
-
-
- into your code, but the string you passed is displayed on the screen and
-
-
- the program counter has been bumped passed the tool call jsl. This way
- you
-
-
- can simply resume execution with two simple keystrokes (with the init
-
-
- version hit 'R' <return>).
-
-
-
- Calling this new feature might look something like this
-
-
-
- PushLong #DebugStr
-
-
- ldx #$09FF
-
-
- jsl >$E10000
-
-
-
- ...
-
-
- DebugStr str 'You are about to do blah.'
-
-
-
- from pascal the same would be achieved by doing this...
-
-
-
- DebugStr('You are about to do blah.');
-
-
-
- I would recommend that assembly language users use a macro to make the
-
-
- toolcall and call it _DebugStr. MPW IIGS Pascal users could use the
-
-
- following to define the debugstr routine:
-
-
-
- Procedure DebugStr(theString:str255);
-
-
- INLINE $09FFA2, $E1000022;
-
-
-
- This call will also work when being called via the glue vector.
-
-
- NOTE: Since this call is only available when the debugger is loaded you
-
-
- will ALWAYS want to be sure to remove ALL calls to the debugger before
-
-
- releasing your program (or even using it on machines that do not have a
-
-
- debugger installed).
-
-
-
-
- SetMileStone:
-
-
- SetMileStone operates exactly the same way as debugstr except that the
-
-
- debugger is not actually entered. This will allow tracking of random
-
-
- crashes by allowing you to call the SetMileStone routine with milestones
-
-
- that have been met. Any time the debugger is entered via a BRK instruction
-
-
- or thru the keyboard, the last string passed via the SetMileStone call will
-
-
- be displayed. The toolcall number for SetMileStone is $0AFF, the MPW
- IIGS
-
-
- Pascal interface might look like this:
-
-
-
- Procedure SetMileStone (theString:str255);
-
-
- INLINE $0AFFA2, $E1000022;
-
-
-
-
- DebugVersion, DebugStatus:
-
-
- These calls are added so that an application can identify the version of the
-
-
- debugger that is loaded and thus know what calls can be made to the debug
-
-
- tool. Currently, these calls are identical and return the same result. The
-
-
- DebugStatus call returns non-zero for true (as opposed to $FFFF which
- most
-
-
- people might want...) other than that these calls act the same as any other
-
-
- toolbox status or version call, each call requires a word space on the
- stack
-
-
- for the result which is on the top of the stack when the call completes. If
-
-
- a debugger is loaded that does not support this feature you will get a
-
-
- standard tool locator error. For version 1.5b8 the version number returned
-
-
- is $158F .As you might expect, this number will change as the debugger
-
-
- version changes and it will always go up, never down.
-
-
-
-
- Glue Snypher:
-
-
- Glue snypher is a routine that can recognize high level language tool calls
-
-
- that are made with the standard glue entry, when a call to glue is detected
-
-
- while disassembling an instruction the call to glue will be replaced with
-
-
- *_TooName in a manner similar to how real tool calls now work. Glue
- snypher
-
-
- is also used by the memory protect feature, if a glue call is detected
-
-
- while the standard toolbox memory protect range is on, the glue call will
-
-
- be treated as if it were a JSL >$e10000. All glue entries MUST be a JSL
-
-
- to one of 3 standard types of glue that are shown below:
-
-
-
-
- ToolGlueType1 LDX #$ToolNum
-
-
- JSL >$E10004
-
-
- ...
-
-
- RTL
-
-
-
- ToolGlueType2 LDX #$ToolNum
-
-
- JML CommonCall
-
-
- ...
-
-
- CommonCall JSL >$E10004
-
-
- ...
-
-
- RTL
-
-
-
- ToolGlueType3 LDX #$ToolNum
-
-
- JMP CommonCall
-
-
-
- If any other types of glue calls are used, they will not be properly
- detected.
-
-
-
-
- Glue Breaks:
-
-
- In addition to glue snypher further support was added for high level
-
-
- languages by extending the tool break support to the glue vector
- ($E10004).
-
-
- Since error conditions are treated differently with glue (The second RTL
-
-
- ain't mine no more...) it seems unreasonable to also support error breaks
-
-
- via the glue vector.
-
-
-
-
- OSBreaks:
-
-
- OSBreaks work very much the same way that tool breaks work with three
-
-
- exceptions. First, instead of breaking on a tool call they will break on
-
-
- a call to the OS. Next, you can NOT specify an OS break by name, only by
-
-
- number. Lastly, they are not supported in trace mode, only in real time
-
-
- mode. To use OSBreaks you simply type setOSBrk #xxxx where xxxx is the
-
-
- number of the OS routine that you want to break on. This number is
- matched
-
-
- exactly when an OS call is made, so if you do not know if the target call
-
-
- is class 0 or class 1 you must set the break for both calls. OSBreaks are
-
-
- supported via both vectors, inline and stackbased. The following is a
-
-
- list of commands that operate on OS breaks and what they do.
-
-
-
- SetOSBrk - adds a number to the OS break list
-
-
- ClrOSBrk - Removes a given number from the OS break list
-
-
- ClrAllOSBrk - Removes all numbers from the OS break list
-
-
- OSBrkIn - enables real time scanning for OS breaks
-
-
- OSBrkOut - disables real time scanning of OS breaks
-
-
- ShowBrks - lists all tool and OS breaks currently set.
-
-
-
-
- DA Debugging support:
-
-
- In the past it has always been difficult to debug certain new desk
-
-
- accessories because they accept keystrokes, and keep the debugger from
-
-
- receiving them. I have added a patching mechanism to the system event
-
-
- call that is installed when the debugger is installed that fixes this
-
-
- problem. The way this feature now works is that if the caps lock key is
-
-
- down no keyboard events get passed to system event (and then to any open
-
-
- DA's) and the debugger will always get them. A side effect of this is that
-
-
- when the debugger screen is not active applications will get the same
-
-
- keystroke events if the CAPS LOCK key is down. As a gentle reminder of
-
-
- this feature, when installed, it will make your GS speaker click whenever
-
-
- a key is processed by getNextEvent. The debugger used to click on every
-
-
- keystroke, regardless of the state of the CAPS LOCK key. Dave complained
-
-
- enough that the debugger was changed to only click when keys are pressed
-
-
- if the CAPS LOCK key is down.
-
-
-
-
- New Template types:
-
-
-
- We have added support for a few more data types in templates, these are
-
-
- mainly for use with GS/OS strings, but can also be used for any word
-
-
- length string. they are:
-
-
-
- InputStr: This type will read the next word of data and treat it as
-
-
- a length word for string data that follows. The entire
-
-
- contents of the string will be displayed.
-
-
-
- OutputStr: Similar to InputStr except that the first word is a buffer
-
-
- length and the second word is the string length. After the
-
-
- string is displayed the debugger will skip to the end of
-
-
- the buffer to find the next byte of data to process.
-
-
-
-
- RealTime Conditional Breakpoints:
-
-
-
- The debugger now supports conditional real time breakpoints. In the past
-
-
- when a breakpoint was entered in the breakpoint list and you used the IN
-
-
- feature to make them work real time, the trigger count that you entered
-
-
- was ignored. Now, If you the trigger count is supported the same way it is
-
-
- supported in trace mode, that is, if you insert a real time breakpoint
-
-
- with a count higher than 1 it will break on the Nth execution of the
-
-
- opcode at that location. NOTE: Currently the following opcodes are not
-
-
- supported as real time conditional breakpoints: JSL(mem), JSR(mem),
-
-
- JSR(mem,x), JMP(mem), JMP(mem,x), RTI.
-
-
-
- In addition to supporting a count value for real time break points, the
-
-
- debugger now also allows a simple conditional statement to be used
- instead.
-
-
- The debugger allows only one conditional statement at a time, but as many
-
-
- of the breakpoints can use it as you want. To enable the conditional
-
-
- statement (henceforth called IF) simply type an "i" when entering a
-
-
- breakpoints trigger value instead of a hex digit. To set the current IF
-
-
- use the command SetIF. the syntax of the SetIF command is as follows:
-
-
-
- SETIF {width} {Spec1}{Operator}{Spec2}
-
-
-
- Legal {width} values
-
-
- W for word
-
-
- B for byte
-
-
-
- Legal {Operator} values
-
-
- = for is equal to
-
-
- # for is NOT equal to
-
-
- < for is less than
-
-
- > for is Greater than or equal to
-
-
-
- Legal {Spec1} and {Spec2} values are
-
-
- A,X,Y,S,D,P,B for the corresponding register
-
-
- $BBXXXX as the address of a value in memory
-
-
- #$XXXX as a hexidecimal constant ({SPEC2} only)
-
-
-
- Some examples of IFs
-
-
-
- SETIF W A<#$0101 (Break if the word in <A> is less than #$0101)
-
-
- SETIF B $021234=$034321 (Break if the bytes at $02/1234 and
- $03/4321
-
-
- are the same.)
-
-
-
- NOTE: Currently only long addresses are supported.
-
-
-